/**
 * Description: 数组指针函数 指针
 * File: a.c |Time: 2021-07-20 16:52
 */
#include <stdio.h>

/**
 * 返回值为void*的函数
 */
void * func(int a)
{
    printf("a = %d\n", a);
    return NULL;
}


/**
 * 返回值为void**的函数
 */
void ** func_p(int a)
{
    printf("a = %d\n", a);
    return NULL;
}

/**
 * 返回值为void *[10]类型的数组指针
 */
void *g_arr[10];

void *(* func_arrp(int a)) [10]
{
    printf("a = %d\n", a);

    return &g_arr;
}


/**
 * 返回值为void*
 */
int main(int argc, const char *argv[])
{
    // 函数指针数组
    void *(*p_arr[10])(int);

    // 函数指针
    void *(*p_test)(int);

    // 返回值为void**的函数指针
    void *( *(*pp_test)(int) );
    void **(*pp_test_1)(int);

    pp_test = func_p;
    pp_test_1 = func_p;

    // 返回值为void** 的函数指针数组
    // void *( *(*pp_test_arr[10])(int) );
    void **(*pp_test_arr[10])(int) ;
    pp_test_arr[0] = func_p;
    pp_test_arr[0](100);
    
    // 返回值为指针数组指针 的 函数指针
    void *( *(*ret_p_test)(int) )[10];
    ret_p_test = func_arrp;
    ret_p_test(123);


    // void *(* (*fp1)(int))[10] = &p_arr;

    return 0;
}
